home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2004 #2 / K-CD-2-2004.ISO / OpenOffice Sv / f_0397 / python-core-2.2.2 / lib / test / test_pwd.py < prev    next >
Encoding:
Python Source  |  2003-07-18  |  1.6 KB  |  72 lines

  1. from test_support import verbose
  2. import pwd
  3.  
  4. print 'pwd.getpwall()'
  5. entries = pwd.getpwall()
  6.  
  7. for e in entries:
  8.     name = e[0]
  9.     uid = e[2]
  10.     if verbose:
  11.         print name, uid
  12.     print 'pwd.getpwuid()'
  13.     dbuid = pwd.getpwuid(uid)
  14.     if dbuid[0] != name:
  15.         print 'Mismatch in pwd.getpwuid()'
  16.     print 'pwd.getpwnam()'
  17.     dbname = pwd.getpwnam(name)
  18.     if dbname[2] != uid:
  19.         print 'Mismatch in pwd.getpwnam()'
  20.     else:
  21.         print 'name matches uid'
  22.     break
  23.  
  24. # try to get some errors
  25. bynames = {}
  26. byuids = {}
  27. for n, p, u, g, gecos, d, s in entries:
  28.     bynames[n] = u
  29.     byuids[u] = n
  30.  
  31. allnames = bynames.keys()
  32. namei = 0
  33. fakename = allnames[namei]
  34. while bynames.has_key(fakename):
  35.     chars = map(None, fakename)
  36.     for i in range(len(chars)):
  37.         if chars[i] == 'z':
  38.             chars[i] = 'A'
  39.             break
  40.         elif chars[i] == 'Z':
  41.             continue
  42.         else:
  43.             chars[i] = chr(ord(chars[i]) + 1)
  44.             break
  45.     else:
  46.         namei = namei + 1
  47.         try:
  48.             fakename = allnames[namei]
  49.         except IndexError:
  50.             # should never happen... if so, just forget it
  51.             break
  52.     fakename = ''.join(map(None, chars))
  53.  
  54. try:
  55.     pwd.getpwnam(fakename)
  56. except KeyError:
  57.     print 'caught expected exception'
  58. else:
  59.     print 'fakename', fakename, 'did not except pwd.getpwnam()'
  60.  
  61. # Choose a non-existent uid.
  62. fakeuid = 4127
  63. while byuids.has_key(fakeuid):
  64.     fakeuid = (fakeuid * 3) % 0x10000
  65.  
  66. try:
  67.     pwd.getpwuid(fakeuid)
  68. except KeyError:
  69.     print 'caught expected exception'
  70. else:
  71.     print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()'
  72.